﻿#pragma once

#include <cstdint>

namespace Den
{
    uint64_t GetRandomUI64(); 
    int64_t  GetRandomI64() ; 
    uint32_t GetRandomUI32(); //from UI32_MIN to UI32_MAX
    int32_t  GetRandomI32() ; 
    uint16_t GetRandomUI16();
    int16_t  GetRandomI16() ;
    uint8_t  GetRandomUI8() ;
    int8_t   GetRandomI8()  ;
    double   GetRandomF64() ; //from 0.0 to 1.0
    float    GetRandomF32() ; //from 0.0 to 1.0

    //от минимального до максимального включительно
    uint64_t GetRandom(const uint64_t minvalue, const uint64_t maxvalue) ;
    int64_t  GetRandom(const int64_t  minvalue, const int64_t  maxvalue) ;
    uint32_t GetRandom(const uint32_t minvalue, const uint32_t maxvalue) ;
    int32_t  GetRandom(const int32_t  minvalue, const int32_t  maxvalue) ;
    uint16_t GetRandom(const uint16_t minvalue, const uint16_t maxvalue) ;
    int16_t  GetRandom(const int16_t  minvalue, const int16_t  maxvalue) ;
    uint8_t  GetRandom(const uint8_t  minvalue, const uint8_t  maxvalue) ;
    int8_t   GetRandom(const int8_t   minvalue, const int8_t   maxvalue) ;
    double   GetRandom(const double   minvalue, const double   maxvalue) ;
    float    GetRandom(const float    minvalue, const float    maxvalue) ;

    //от нуля до максимального включительно
    uint64_t GetRandom(const uint64_t maxvalue) ;
    int64_t  GetRandom(const int64_t  maxvalue) ;
    uint32_t GetRandom(const uint32_t maxvalue) ;
    int32_t  GetRandom(const int32_t  maxvalue) ;
    uint16_t GetRandom(const uint16_t maxvalue) ;
    int16_t  GetRandom(const int16_t  maxvalue) ;
    uint8_t  GetRandom(const uint8_t  maxvalue) ;
    int8_t   GetRandom(const int8_t   maxvalue) ;
    double   GetRandom(const double   maxvalue) ;
    float    GetRandom(const float    maxvalue) ;
    
}//namespace Den
